package elEMAS.impl;

import common.NonDominatedAgentsAggregator;
import elEMAS.inf.Agent;

public class EmasElitistIsland<Genotype> extends NonDominatedAgentsAggregator<Genotype,Agent<Genotype>> {
    
}

/*
public class EmasElitistIsland<Genotype> {

    List<Agent<Genotype>> agents = new LinkedList<Agent<Genotype>>();
    
    public void addAgent(Agent<Genotype> newAgent) {
        
        boolean isNotDominated = true;
          
        Iterator<Agent<Genotype>> agentsIter = agents.iterator();
        while(agentsIter.hasNext()) {
            Agent<Genotype> agent = agentsIter.next();
            
            int dominaiton = agent.checkDomination(newAgent);
            if (dominaiton == 1) {
                // agent jest zdominowany przez innego, więc nie zostaje dodany do elitarnej wyspy, a z rodzimej został  usunięty, więc umiera
                isNotDominated = false;
                break;
            }
            else if (dominaiton == -1) {
                // agent dominuje jakiegoś agenta elitarnego, zostaje więc dodany a tamten usunięty
                agentsIter.remove();
            }
        }
        if (isNotDominated) {
            
            // sprawdzam czy nie ma duplikatow
            for (Agent<Genotype> agent : agents) {
                if (GeneticHelper.isDuplicate(agent,newAgent,0.00001) == true) {
                    return;
                }
            }
            agents.add(newAgent);
        }
    }
    
    public void addAllAgents(List<Agent<Genotype>> agents) {
        
        for (Agent<Genotype> agent : agents) {
            addAgent(agent);
        }
    }
    
    public List<Agent<Genotype>> getAgents() {
        return this.agents;
    }
    

}
*/
